package controller; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author Ghiurutan This class transforms the input from Gui into a coefficient * array. * */ public class PolynomialProcess { private int[] pol; public int [] getPolynomial(String polynomial) { getDegreeOfPolynomial(polynomial); polynomial = polynomial.replace(regexCheckerExponent("(.*?)(-?)(\\+?)x(\\^?)([0-9]*)", polynomial), ""); regexCheckerConstant("(.*)", polynomial); return pol; } private void getDegreeOfPolynomial(String polynomial) { Pattern checkRegex = Pattern.compile("(.*?)(-?)(\\+?)x(\\^?)([0-9]*)"); Matcher regexMatcher = checkRegex.matcher(polynomial); if (regexMatcher.find()) { if (!regexMatcher.group(4).equals("")) { pol = new int[Integer.parseInt(regexMatcher.group(5)) + 1]; } else { pol = new int[2]; } } else { pol = new int[1]; } } private void regexCheckerConstant(String theRegex, String polynomial) { Pattern checkRegex = Pattern.compile(theRegex); Matcher regexMatcher = checkRegex.matcher(polynomial); while (regexMatcher.find()) { if (regexMatcher.group(0).length() != 0) { pol[0] = Integer.parseInt(regexMatcher.group(1)); } } } // Matching the elements with x private String regexCheckerExponent(String theRegex, String polynomial) { String rezult = ""; int coeff = 0, power = 0; Pattern checkRegex = Pattern.compile(theRegex); Matcher regexMatcher = checkRegex.matcher(polynomial); while (regexMatcher.find()) { if (regexMatcher.group(0).length() != 0) { rezult += regexMatcher.group(0); if (!regexMatcher.group(1).equals("")) { coeff = Integer.parseInt(regexMatcher.group(1)); } else { if (!regexMatcher.group(2).equals("")) { coeff = -1; } else if (!regexMatcher.group(3).equals("")) { coeff = 1; } else { coeff = 1; } } if (!regexMatcher.group(4).equals("")) { power = Integer.parseInt(regexMatcher.group(5)); } else { power = 1; } } pol[power] = coeff; } return rezult; } }